"""
2.3.1 for 语句基本用法
本知识点主要学习使用 for 循环对可迭代对象进行遍历。可迭代对象中包含有很多个元
素，for 循环每执行一次会提取一个元素放入变量中，从头到尾读取完所有元素的过程就称
为对可迭代对象的一次遍历。for 语句的语法形式是：
for 变量名 in 可迭代对象:
执行语句(缩进代码块)
"""
"""
【示例 2.3.1.1】使用 for 循环读取一个最简单的可迭代对象：字符串，完成对一个字符
串从左到右逐字符读取的遍历。
"""
student_name = '骆雄铠'
for name_char in student_name:
    print('读取的字符为:',name_char)
print('读取完成!')  
print("*" * 100)

"""
【示例 2.3.1.2】使用内置函数 range()生成一个可迭代对象，并使用 for 循环进行遍历。
range()函数的标准形式是 range(start, stop, step)，step 是一个整数，意味着步长，函数会从元 素 start 开始构建，后续每个元素与前一个元素有 step 大小的差距，在小于 stop 的整数时停
止构建。
"""
iterableObj = range(0, 5, 2)
for count in range(0, 5, 2):
    print(count)

print("*" * 100)
"""
【代码分析】第 1 行代码 range(0, 5, 2)构建了一个包含 3 个元素的整数序列。
第一个元素是 0，因为设置了步长是 2，所以第二个元素比第一个增加 2 为 2，第三个元素
又比第二个元素增加 2 为 4，再往下计算是 6 超过了定义的 stop 为 5 的边界，所以这个可迭代对
象包含了 3 个元素是 0, 2, 4。
"""

"""
【示例 2.3.1.3】使用 range()函数的另外一种形式生成一个可迭代对象，并使用 for 循环
进行遍历。range()函数如果不写 step，则为默认值 1，range(0 ,3)等同于 range(0, 3, 1)；如果
不写 start，则默认 start 的值为 0，range(3)相当于 range(0, 3，1)。
"""
iterableObj = range(0, 3)
for count in iterableObj:
    print('现在读取的元素是：' + str(count))

print("*" * 100)

"""
【代码分析】第 1 行代码 range(0, 3)构建了一个从 0 到 3 的整数序列，这个整数序列中的元
素大于等于 0 且小于 3，包含 0 但不包括 3，这个可迭代对象包含了 3 个元素是 0, 1, 2。
"""

"""
【示例 2.3.1.4】使用 for 循环 3 次来输入学生姓名，完成了和【示例 2.2.1.3】同样的功能。
"""
for nameCount in range(3):
    studentName = input('请输入学生的姓名：')
    print('第' + str(nameCount + 1) + '次输入姓名是：'+studentName)
print('姓名输入完毕')

print("*" * 100)

"""
【示例 2.3.1.5】使用 for 循环对用户的输入进行验证，完成一个密码校验的模拟。让用
户循环输入三次密码，如果密码正确则给出校验成功的提示。
"""
password = 'ccit'
passRight = False
for try_count in range(3):
    pass_input = input('请第' + str(try_count + 1) + '次输入密码：')
    if pass_input == password:
        print('输入密码正确！')
        passRight = True
    else:
        print("输入密码不正确")
if not passRight:
    print("三次输入都不正确")
